package br.ufrn.sipac.patrimonio.coletor.activity;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import br.ufrn.sipac.patrimonio.auxiliares.ConstantesOperacoes;
import br.ufrn.sipac.patrimonio.auxiliares.TipoEstadoBem;
import br.ufrn.sipac.patrimonio.coletor.R;
import br.ufrn.sipac.patrimonio.coletor.controller.MainController;
import br.ufrn.sipac.patrimonio.coletor.dominio.ItemLevantamento;
import br.ufrn.sipac.patrimonio.coletor.dominio.Persistencia;

/**
 * Activity que exibe os dados dos bens associados ao levantamento patrimonial.
 * 
 * @author Giuliana Silva Bezerra
 * 
 */
public class BensLevantamentoActivity extends Activity {
	private ListView table;
	private static final String HEADER = "Tombo            Denomina\u00E7\u00e3o               Estado";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_bens_levantamento);

		// Mapear os componente da tela
		table = (ListView) findViewById(R.id.SCHEDULE);
		ListView header = (ListView) findViewById(R.id.list_header_title);

		// Inicializar componentes da tela
		ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
		ArrayList<HashMap<String, String>> headerList = new ArrayList<HashMap<String, String>>();
		HashMap<String, String> map = new HashMap<String, String>();

		// Adiciona cabeçalho da tabela
		map.put("Title", HEADER);
		headerList.add((HashMap<String, String>) map.clone());
		map.clear();

		Collection<Persistencia> list = null;
		if (MainController.getTipoOperacao() == ConstantesOperacoes.OPERACAO_LISTAR_BENS_BAIXADOS)
			list = MainController.getBensBaixados();
		else if (MainController.getTipoOperacao() == ConstantesOperacoes.OPERACAO_LISTAR_BENS_INVENTARIADOS)
			list = MainController.getBensInventariados();
		else if (MainController.getTipoOperacao() == ConstantesOperacoes.OPERACAO_LISTAR_BENS_NAO_CADASTRADOS)
			list = MainController.getBensNaoCadastrados();
		else
			list = MainController.getBensNaoInventariados();

		for (Persistencia obj : list) {
			ItemLevantamento item = (ItemLevantamento) obj;
			if (item.getId() != 0) {
				map.put("Tombo", item.getNumTombamento());
				map.put("Denominacao", item.getDenominacao());
				map.put("Estado",
						TipoEstadoBem.getDescricao((short) item.getEstado()));
			} else {
				map.put("Tombo",
						String.valueOf(item.getBem().getNumTombamento()));
				map.put("Denominacao", item.getBem().getDenominacao());
				map.put("Estado",
						TipoEstadoBem.getDescricao((short) item.getEstado()));
			}
			mylist.add((HashMap<String, String>) map.clone());
			map.clear();
		}

		ListAdapter mSchedule = new SimpleAdapter(this, mylist,
				R.layout.bens_linhas, new String[] { "Tombo", "Denominacao",
						"Estado" }, new int[] { R.id.tombo, R.id.denominacao,
						R.id.estado });
		SimpleAdapter headerAdapter = new SimpleAdapter(this, headerList,
				R.layout.list_header, new String[] { "Title" },
				new int[] { R.id.list_header_title });
		header.setAdapter(headerAdapter);
		table.setAdapter(mSchedule);
	}

	/**
	 * Carrega menu da aplicação.
	 */
	private void iniciaMenu() {
		finish();
		Intent intent = new Intent(this, MenuActivity.class);
		startActivity(intent);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.bens_levantamento, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.item2:
			iniciaMenu();
		case R.id.item1:
			finish();
		}
		return false;
	}

	@Override
	public void onBackPressed() {
		finish();
		Intent intent = new Intent(this, DetalhesColetaActivity.class);
		startActivity(intent);
	}
}
